<?php
class AppController extends Controller {
             function subir_archivo($folder, $archivo_file) 
             {
                $folder_destino = WWW_ROOT . $folder;
                $rel_url = $folder;
                //datos del arhivo
                $nombre_archivo = $archivo_file['name'];
                $tipo_archivo = $archivo_file['type'];
                $tamano_archivo = $archivo_file['size'];
                
                //compruebo si las caracter�sticas del archivo son las que deseo

             	$archivo = explode( ".", $nombre_archivo );
             	$archivo_nombre = $this->clean_image_name( $archivo[0] );
             
             	$tam = count( $archivo );
                //generar un numero aleatorio para agregar al archivo
                $key = rand();
                $archivo_extension = $this->slug( $archivo[$tam-1] );
                    	
                $nombre_final_archivo = $archivo_nombre . $key. "." . $archivo_extension;
                $archivos_permitidos = array("jpg","jpeg","gif","png","doc","exe","docx","pdf");
                
	             if(in_array($archivo_extension, $archivos_permitidos))
	                {
	
                        if (move_uploaded_file( $archivo_file['tmp_name'] , $folder_destino . $nombre_final_archivo))
                        {
                       
	                        chmod($folder_destino.$nombre_final_archivo,0777);
	                        return $nombre_final_archivo;
	                                
                        }
                        else
                        {
                            return false;
                        }
           
                    }

	
                }
                
                
              function resize_img($imgname, $size, $filename)    
              {
                $filetype = $this->getFileExtension($imgname);
                $filetype = strtolower($filetype);

                switch($filetype) 
                {
                    case "jpeg":
                    case "jpg":
                    $img_src = ImageCreateFromjpeg ($imgname);
                    break;
                    case "gif":
                    $img_src = imagecreatefromgif ($imgname);
                    break;
                    case "png":
                    $img_src = imagecreatefrompng ($imgname);
                    break;
                }

                $true_width = imagesx($img_src);
                $true_height = imagesy($img_src);

                if ($true_width>=$true_height)
                {
                    $width=$size;
                    $height = ( $width/$true_width ) * $true_height;
                }
                else
                {
                    $width=$size;
                    $height = ( $width/ $true_width ) * $true_height;
                }
                $img_des = ImageCreateTrueColor( $width,$height );
                imagecopyresampled ($img_des, $img_src, 0, 0, 0, 0, $width, $height, $true_width, $true_height);

                // Save the resized image
                switch($filetype)
                {
                    case "jpeg":
                    case "jpg":
                     imagejpeg($img_des,$filename,80);
                     chmod($filename,0777);
                     break;
                     case "gif":
                     imagegif($img_des,$filename,80);
                     chmod($filename,0777);
                     break;
                     case "png":
                     imagepng($img_des,$filename,80);
                     chmod($filename,0777);
                     break;
                }
                
            }
            
            function crop_img($imgname, $scale, $filename) 
            {
                $filetype = $this->getFileExtension($imgname);
                $filetype = strtolower($filetype);

                switch($filetype)
                {
                    case "jpeg":
                    case "jpg":
                      $img_src = ImageCreateFromjpeg ($imgname);
                     break;
                     case "gif":
                      $img_src = imagecreatefromgif ($imgname);
                     break;
                     case "png":
                      $img_src = imagecreatefrompng ($imgname);
                     break;
                }

                $width = imagesx($img_src);
                $height = imagesy($img_src);
                $ratiox = $width / $height * $scale;
                $ratioy = $height / $width * $scale;

                //-- Calculate resampling
                $newheight = ($width <= $height) ? $ratioy : $scale;
                $newwidth = ($width <= $height) ? $scale : $ratiox;

                //-- Calculate cropping (division by zero)
                $cropx = ($newwidth - $scale != 0) ? ($newwidth - $scale) / 2 : 0;
                $cropy = ($newheight - $scale != 0) ? ($newheight - $scale) / 2 : 0;

                //-- Setup Resample & Crop buffers
                $resampled = imagecreatetruecolor($newwidth, $newheight);
                $cropped = imagecreatetruecolor($scale, $scale);

                //-- Resample
                imagecopyresampled($resampled, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                //-- Crop
                imagecopy($cropped, $resampled, 0, 0, $cropx, $cropy, $newwidth, $newheight);

                // Save the cropped image
                switch($filetype)
                {
                    case "jpeg":
                    case "jpg":
                     imagejpeg($cropped,$filename,80);
                     break;
                     case "gif":
                     imagegif($cropped,$filename,80);
                     break;
                     case "png":
                     imagepng($cropped,$filename,80);
                     break;
                }
            }


            
        //Obtener el extension del archivo    
            function getFileExtension($str) 
            {

                $i = strrpos($str,".");
                if (!$i) { return ""; }
                $l = strlen($str) - $i;
                $ext = substr($str,$i+1,$l);
                return $ext;
            }
                
        //crear slug            
             function slug( $string )
             {
                $slug =trim( $string );
                $slug = strtolower( $string ); // lower-case the string
                $slug = preg_replace( '/[^a-z0-9- ]/', '', $slug ); // remove all non-alphanumeric characters except for spaces and hyphens
                $slug = str_replace( '  ', ' ', $slug );
                $slug = str_replace( ' ', '-', $slug );
           
                return $slug;
             }
                
               
             function clean_image_name( $name ) 
             { 
               $name = $this->slug( $name ); 
               $code_entities_match = array( '&quot;' ,'!' ,'@' ,'#' ,'$' ,'%' ,'^' ,'&' ,'*' ,'(' ,')' ,'+' ,'{' ,'}' ,'|' ,':' ,'"' ,'<' ,'>' ,'?' ,'[' ,']' ,'' ,';' ,"'" ,',' ,'_' ,'/' ,'*' ,'+' ,'~' ,'`' ,'=' ,' ' ,'---' ,'--','--'); 
            $code_entities_replace = array('' ,'-' ,'-' ,'' ,'' ,'' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'-' ,'-' ,'-','-'); 
            $name = str_replace($code_entities_match, $code_entities_replace, $name); 
                return $name; 
            }
			
	    function validate_email( $address )
		{
		  // Check an email address for valid characters
		  if (ereg("^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$", $address))
			return true;
		  else
			return false;
		}  
			
			
	   function check_user() 
           {
	            // verifica si el usuario esta autenticado
	            $user = $this->Session->read('Agent');

	            // if empty
	            if( empty($user) ) 
	            {
		            // set a flash message
		            $this->Session->setFlash('ERROR:Debe autenticarse para  ingresar al area de administracion.');
		            // redireccionar usuario
		            $this->redirect(array('action'=>'admin_login', 'controller'=>'agents', 'admin'=>true));
	            }
	        }
			
}

?>
